TD - Programmation Python
Exercice 1
Dans la fenêtre principale (la console), exécutez les instructions suivantes. Sur votre copie, expliquez les résulats en une phrase. Lorsque la console génère une erreur, essayez de comprendre le message d'erreur.
1
>>>2 + 1 | >>>2.1 | >>>2,1 | >>>2.0 + 1 |
>>>int (3.14) | >>>float (3) | >>>str (21) | >>>12 < 13 |
2
>>>"toto" + "tata" | >>>"toto" + 10 | >>>"toto" + str (10) | >>>"albert" > "barry" |
>>>false | >>>False | >>>False and True | >>> 2<3 and False |
Exercice 2
1
Commentez simplement sur votre copie les suites d'instructions suivantes :
>>>x=3 >>>x=2 >>>print (x) |
>>>x=2;y=3 >>>print (x*y) >>>print (x**y) |
>>>5/2 >>>5//2 >>>5%2 |
>>>x=2 >>>print ("resultat=x") >>>print ("resultat=%d" %x) >>>print ("resultat=%f" %x) |
2
Commencez par taper la commande "
>>>import math
" pour utiliser les fonctions mathématiques, et expliquer ce que font les fonctions utilisées :
>>>x=-6.7 >>>abs (x) >>>int (x) >>>round (x) |
>>>x=1.2 >>>math.trunc (x) >>>math.ceil (x) >>>math.floor (x) |
>>>print ('oiseau') >>>print ('L'oiseau') >>>print ("L'oiseau") >>>print ('L\'oiseau') |
>>>L=[11,'b', 1.2]; c='hello' >>>L[2] >>>c[0] >>>c[len (c)-1] |
Exercice 3
Un polynôme du second degré est de la forme \(a x^2 + b x + c\) où \(a\), \(b\) et \(c\) sont des réels.
Télécharger le fichier discriminant.py qui contient une fonction qui calcule le discriminant, et éditez le.
1
Modifiez le programme pour qu'il demande à l'utilisateur d'entrer au clavier les trois valeurs \(a\), \(b\) et \(c\) et qu'il donne la réponse avec une phrase comme "Le discriminant vaut ...".
2
Modifiez encore le programme pour qu'il calcule les racines. Pour cela, il faudra utiliser
if
, elif
et else
, pour tester si le discriminant est positif, négatif ou nul.
Exercice 4
On souhaite tester si un triangle est rectangle à partir des longueurs de ses trois côtés. On rappelle qu'un triangle est rectangle si les trois longueurs vérifient l'identité de pythagore.
1
Créer une fonction
est_rectangle0 ()
qui prend trois nombres \(x, y\) et \(z\) en argument où \(z\) est le plus grand des trois et qui renvoie True
si le triangle est rectangle, et False
sinon.
2
Créer une fonction
est_rectangle ()
qui prend trois nombres \(x, y\) et \(z\)en argument, dans n'importe quel ordre, et qui renvoie True
si le triangle est rectangle, et False
sinon (utiliser la fonction précédente).
3
Tester avec le fameux triplet pythagoricien \((3, 4, 5)\).
Exercice 5
1
Ecrire une fonction
somme_inv_carres ()
qui prend un entier \(n\) en argument, et calcule la somme : $$ 1 + \frac{1}{2^2} + \frac{1}{3^2} + ... + \frac{1}{n^2} $$
On rappelle que \(x^y\), s'écrit
x**y
en python.
2
Appliquer cette fonction pour \(n=10000\), et comparer le résultat avec \(\frac{\pi^2}{6}\).
La constante \(\pi\) est utilisable à partir de la librairie
math
. On importe la librairie à l'aide de la commande "import math"
, puis il suffit de taper "math.pi"
pour la constante \(\pi\).
Exercice 6
1
Télécharger le fichier python suivant
pal.py
. Il contient une fonction
nettoyer ()
. Appliquer la fonction nettoyer
à une chaîne de caractère contenant des accents et de la ponctuation.
2
Ecrire une fonction appelée
renverse ()
qui prend en argument une chaîne de caractères et qui retourne la chaîne de caractère renversée. Par exemple, renverse ('hello')
, renverra 'olleh'
. Il sera possible de s'inspirer de l'exercice 7 du TD d'algorithmique.
3
En utilisant les deux fonctions précédentes, faire une fonction
palindrome ()
qui renvoie True
si la chaîne est un palindrome, et False
sinon. Essayer avec l'exemple célèbre :
Tu l'as trop écrasé César ce port salut
4
Question difficile
La fonction
La fonction
nettoyer ()
utilise une librairie et des fonctionnalités complexes. Programmer une fonction nettoyer2 ()
qui fasse la même chose et n'utilise que des boucles, des tests, et des fonctions simples. -
"str.replace ('a', 'A')"
remplacera tous les caractères 'a' par 'A' dans la chaîne de caractèresstr
-
Il est possible de tester si le caractère 'a' est dans une chaîne
str
avec la syntaxe"if 'a' in str: ..."
- Il est possible de tester si un élément est dans une liste de la même manière.
Exercice 7
Pour les questions suivantes, utiliser le cours d'algorithmique.
1
Ecrire une fonction tri_selection () qui prend en argument une liste, et renvoie la liste triée selon le tri par sélection.
2
Ecrire une fonction tri_selection () qui prend en argument une liste, et renvoie la liste triée selon le tri à bulle. Vérifier sur une liste de votre choix que les deux fonctions réalisent la même tâche.
3
Il existe une librairie "time" en python qui permet de chronométrer vos programmes en prenant le temps de l'horloge deux fois, et en prenant la différence :
import time
tic = time.clock ()
#attendre un peu
toc = time.clock ()
temps = toc - tic
Comparer la vitesse d'exécution de vos deux fonctions sur les listes suivantes tic = time.clock ()
#attendre un peu
toc = time.clock ()
temps = toc - tic
- [12,9,23,1,23,-2,0,67,5,34,-12,-999, 19, 3, 34, 5, 67]
- list (range (0,10000))
- list (range (10000,1,-1))
- list (range (100000,1,-1))
4
Python possède déjà une fonction de tri
list.sort ()
, qui modifie la liste donnée.
Par exemple, si on a une liste
En utilisant le chronomètre de python, comparez les vitesses d'exécution de vos fonctions avec celle de la fonction L
valant [3,2,1]
, en tapant l'instruction, list.sort (L)
, la liste L
est modifiée et vaut désormais [1,2,3]
list.sort ()
sur les exemples précédents.